/*
package cn.znzz.cjm.service.impl;

import cn.znzz.cjm.config.CourseRedis;
import cn.znzz.cjm.domain.CourseType;
import cn.znzz.cjm.mapper.CourseTypeMapper;
import cn.znzz.cjm.service.ICourseTypeService;
import cn.znzz.cjm.util.AjaxResult;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.locks.ReentrantLock;

*/
/**
 * <p>
 * 课程目录 服务实现类
 * </p>
 *
 * @author chenjiangmin
 * @since 2021-12-20
 *//*

@Service
public class CourseTypeServiceImpl extends ServiceImpl<CourseTypeMapper, CourseType> implements ICourseTypeService {

    @Autowired
    private CourseTypeMapper typeMapper;

    private ReentrantLock lock;

    @Override
    @Cacheable(cacheNames = CourseRedis.COURSE_REDIS_COMMON,key = "'keyword'")
    public AjaxResult treeData() {

        List<CourseType> list=typeData();
        return AjaxResult.me().setResultObj(list);
    }

    @Override
    @CacheEvict(cacheNames = CourseRedis.COURSE_REDIS_COMMON,key = "'keyword'")
    public boolean deleteById(Serializable id) {
        return super.deleteById(id);
    }

    @Override
    @CacheEvict(cacheNames = CourseRedis.COURSE_REDIS_COMMON,key = "'keyword'")
    public boolean updateById(CourseType entity) {
        return super.updateById(entity);
    }

    @Override
    @CacheEvict(cacheNames = CourseRedis.COURSE_REDIS_COMMON,key = "'keyword'")
    public boolean insert(CourseType entity) {
        return super.insert(entity);
    }

    private List<CourseType> typeData() {
        List<CourseType> result = new ArrayList<>();
        //拿到所有值
        List<CourseType> list = typeMapper.selectList(null);
        //将对象和id建立联系
        Map<Long, CourseType> Map = new HashMap<>();
        for (CourseType type:list){
            //对象的id对应到整个对象
            Map.put(type.getId(),type);
        }
        //调用层级
        for (CourseType type:list){
            //父
            if(type.getPid()==0){
                result.add(type);
            }else{
                //其他
                //从这个对象b里面拿到pid
                Long pid = type.getPid();
                //将拿到的pid，作为一个id，去查找是否存在一个对象a的id等于这个pid
                //把pid当做id查找到了一个对象a，那么这个a对象就是pid对应的这个对象b的父
                //这个a对象里面就添加他的children,就是pid对应的对象b
                //对象b就是a的子
                CourseType courseType = Map.get(pid);
                courseType.getChildren().add(type);
            }
        }
        return result;
    }
}
*/
